package br.empresa.sistema.web.controller;

import java.io.Serializable;
import java.util.List;

import org.hibernate.validator.Valid;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.End;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.TransactionPropagationType;
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.annotations.datamodel.DataModelSelection;
import org.jboss.seam.faces.FacesMessages;

import br.empresa.sistema.dominio.PessoaFisica;
import br.empresa.sistema.service.PessoaService;

@Name("pessoaFisicaControle")
public class PessoaFisicaController implements Serializable {
	
	private static final long serialVersionUID = 2687034918418350505L;

	@In(value="#{pessoaFisicaService}")
	private PessoaService<PessoaFisica> pessoaFisicaService;
	
	@In
	private FacesMessages facesMessages;

	@DataModelSelection
	@In(value="#{pessoaFisica}", scope=ScopeType.CONVERSATION, create=false) 
	@Out(scope=ScopeType.CONVERSATION)
	@Valid
	private PessoaFisica pessoaFisica;
	
	@DataModel
	List<PessoaFisica> pessoaFisicas;
	
	@Begin
	public void novo() {
		pessoaFisica = new PessoaFisica();
		//customer = new Customer();
	}
	
	@Begin
	public void editar() {
	}
	
	@Transactional(TransactionPropagationType.SUPPORTS)
	public void excluir() {
		pessoaFisicaService.delete(pessoaFisica);
	}
	
	public void proximo() {
	}
	
	@End
	@Transactional(TransactionPropagationType.SUPPORTS)
	public void gravar() {
		pessoaFisicaService.save(getPessoaFisica());
		facesMessages.add("Registro salvo com sucesso!");
	}
	
	public PessoaFisica getPessoaFisica() {
		return pessoaFisica;
	}

	public void setPessoaFisica(PessoaFisica pessoaFisica) {
		this.pessoaFisica = pessoaFisica;
	}

	@Transactional(TransactionPropagationType.SUPPORTS)
	@Factory("pessoaFisicas")
	public List<PessoaFisica> getPessoaFisicas() {
		this.pessoaFisicas = pessoaFisicaService.retrieveAll();
		return this.pessoaFisicas; 
	}

}